1 /*
2  * The MIT License (MIT)
3  *
4  * Copyright (c) 2014 Devisualization (Richard Andrew Cattermole)
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 module devisualization.util.opengl.function_wrappers.v10;
25 import gl = derelict.opengl3.gl;
26 import gldepcnst = derelict.opengl3.deprecatedConstants;
27 
28 // no need to polute name space any further when its args don't change
29 public import derelict.opengl3.gl : glFlush, glFinish, glScissor, glLineWidth, glPointSize, glClearColor, glClearStencil, glStencilMask, glDepthMask, glViewport;
30 
31 enum InternalFormat {
32     DepthComponent = gl.GL_DEPTH_COMPONENT,
33     DepthStencil = gl.GL_DEPTH_STENCIL,
34     Red = gl.GL_RED,
35     RG = gl.GL_RG,
36     RGB = gl.GL_RGB,
37     RGBA = gl.GL_RGBA,
38     
39     RGB8 = gl.GL_RGB8
40 }
41 
42 enum EnableFunc {
43     Blend = gl.GL_BLEND,
44     ClipDistance = gl.GL_CLIP_DISTANCE0,
45     ColorLogicOp = gl.GL_COLOR_LOGIC_OP,
46     CullFace = gl.GL_CULL_FACE,
47     DebugOutput = gl.GL_DEBUG_OUTPUT,
48     DebugOutputSynchroonous = gl.GL_DEBUG_OUTPUT_SYNCHRONOUS,
49     DepthClamp = gl.GL_DEPTH_CLAMP,
50     DepthTest = gl.GL_DEPTH_TEST,
51     Dither = gl.GL_DITHER,
52     FrameBufferSRGB = gl.GL_FRAMEBUFFER_SRGB,
53     LineSmooth = gl.GL_LINE_SMOOTH,
54     MultiSample = gl.GL_MULTISAMPLE,
55     PolygonOffsetFill = gl.GL_POLYGON_OFFSET_FILL,
56     PolygonOffsetLine = gl.GL_POLYGON_OFFSET_LINE,
57     PolygonOffsetPoint = gl.GL_POLYGON_OFFSET_POINT,
58     PolygonSmooth = gl.GL_POLYGON_SMOOTH,
59     PrimitiveRestart = gl.GL_PRIMITIVE_RESTART,
60     PrimitiveRestartFixedIndex = gl.GL_PRIMITIVE_RESTART_FIXED_INDEX,
61     RasterizerDiscard = gl.GL_RASTERIZER_DISCARD,
62     SampleAlphaToCoverage = gl.GL_SAMPLE_ALPHA_TO_COVERAGE,
63     SampleAlphaToOne = gl.GL_SAMPLE_ALPHA_TO_ONE,
64     SampleCoverage = gl.GL_SAMPLE_COVERAGE,
65     SampleShading = gl.GL_SAMPLE_SHADING,
66     SampleMask = gl.GL_SAMPLE_MASK,
67     ScissorTest = gl.GL_SCISSOR_TEST,
68     StencilTest = gl.GL_STENCIL_TEST,
69     TextureCubeMapSeamless = gl.GL_TEXTURE_CUBE_MAP_SEAMLESS,
70     ProgramPointSize = gl.GL_PROGRAM_POINT_SIZE
71 }
72 
73 enum BlendFactors {
74     Zero = gl.GL_ZERO,
75     One = gl.GL_ONE,
76     SrcColor = gl.GL_SRC_COLOR,
77     OneMinusSrcColor = gl.GL_ONE_MINUS_SRC_COLOR,
78     DstColor = gl.GL_DST_COLOR,
79     OneMinusDstColor = gl.GL_ONE_MINUS_DST_COLOR,
80     SrcAlpha = gl.GL_SRC_ALPHA,
81     OneMinusSrcAlpha = gl.GL_ONE_MINUS_SRC_ALPHA,
82     DstAlpha = gl.GL_DST_ALPHA,
83     OneMinusDstAlpha = gl.GL_ONE_MINUS_DST_ALPHA,
84     ConstantColor = gldepcnst.GL_CONSTANT_COLOR,
85     OneMinusConstantColor = gldepcnst.GL_ONE_MINUS_CONSTANT_COLOR,
86     ConstantAlpha = gldepcnst.GL_CONSTANT_ALPHA,
87     OneMinusConstantAlpha = gldepcnst.GL_ONE_MINUS_CONSTANT_ALPHA,
88     SrcAlphaSaturate = gl.GL_SRC_ALPHA_SATURATE,
89     Src2Color = gl.GL_SRC1_COLOR
90 }
91 
92 enum BindTextureTarget {
93     Texture1D = gl.GL_TEXTURE_1D,
94     Texture2D = gl.GL_TEXTURE_2D,
95     Texture3D = gl.GL_TEXTURE_3D,
96     Texture1DArray = gl.GL_TEXTURE_1D_ARRAY,
97     Texture2DArray = gl.GL_TEXTURE_2D_ARRAY,
98     TextureRectangle = gl.GL_TEXTURE_RECTANGLE,
99     TextureCubeMap = gl.GL_TEXTURE_CUBE_MAP,
100     TextureCubeMapArray = gl.GL_TEXTURE_CUBE_MAP_ARRAY,
101     TextureBuffer = gl.GL_TEXTURE_BUFFER,
102     Texture2DMultiSample = gl.GL_TEXTURE_2D_MULTISAMPLE,
103     Texture2DMultiSampleArray = gl.GL_TEXTURE_2D_MULTISAMPLE_ARRAY
104 }
105 
106 enum PixelFormat {
107     Red = gl.GL_RED,
108     RG = gl.GL_RG,
109     RGB = gl.GL_RGB,
110     BGR = gl.GL_BGR,
111     RGBA = gl.GL_RGBA,
112     BGRA = gl.GL_BGRA,
113     RedInteger = gl.GL_RED_INTEGER,
114     RGInteger = gl.GL_RG_INTEGER,
115     RGBInteger = gl.GL_RGB_INTEGER,
116     BGRInteger = gl.GL_BGR_INTEGER,
117     RGBAInteger = gl.GL_RGBA_INTEGER,
118     BGRAInteger = gl.GL_BGRA_INTEGER,
119     StencilIndex = gl.GL_STENCIL_INDEX,
120     DepthComponent = gl.GL_DEPTH_COMPONENT,
121     DepthStencil = gl.GL_DEPTH_STENCIL
122 }
123 
124 enum PixelDataType {
125     UnsignedByte = gl.GL_UNSIGNED_BYTE,
126     Byte = gl.GL_BYTE,
127     UnsignedShort = gl.GL_UNSIGNED_SHORT,
128     Short = gl.GL_SHORT,
129     UnsignedInt = gl.GL_UNSIGNED_INT,
130     Int = gl.GL_INT,
131     Float = gl.GL_FLOAT,
132     UnsignedByte332 = gl.GL_UNSIGNED_BYTE_3_3_2,
133     UnsignedByte233Rev = gl.GL_UNSIGNED_BYTE_2_3_3_REV,
134     UnsignedShort565 = gl.GL_UNSIGNED_SHORT_5_6_5,
135     UnsignedShort565Rev = gl.GL_UNSIGNED_SHORT_5_6_5,
136     UnsignedShort4444 = gl.GL_UNSIGNED_SHORT_4_4_4_4,
137     UnsignedShort4444Rev = gl.GL_UNSIGNED_SHORT_4_4_4_4_REV,
138     UnsignedShort5551 = gl.GL_UNSIGNED_SHORT_5_5_5_1,
139     UnsignedShort1555Rev = gl.GL_UNSIGNED_SHORT_1_5_5_5_REV,
140     UnsignedInt8888 = gl.GL_UNSIGNED_INT_8_8_8_8,
141     UnsignedInt8888Rev = gl.GL_UNSIGNED_INT_8_8_8_8_REV,
142     UnsignedInt101010102 = gl.GL_UNSIGNED_INT_10_10_10_2,
143     UnsignedInt2101010REV = gl.GL_UNSIGNED_INT_2_10_10_10_REV
144 }
145 
146 enum Face {
147     Front = gl.GL_FRONT,
148     Back = gl.GL_BACK,
149     FrontAndBack = gl.GL_FRONT_AND_BACK
150 }
151 
152 enum HintMode {
153     Fastest = gl.GL_FASTEST,
154     Nicest = gl.GL_NICEST,
155     DontCare = gl.GL_DONT_CARE
156 }
157 
158 enum ClockOrientation {
159     ClockWise = gl.GL_CW,
160     CounterClockWise = gl.GL_CCW
161 }
162 
163 enum PolygonMode {
164     Point = gl.GL_POINT,
165     Line = gl.GL_LINE,
166     FILL = gl.GL_FILL
167 }
168 
169 enum TextureParameterTarget {
170     Texture1D = gl.GL_TEXTURE_1D,
171     Texture2D = gl.GL_TEXTURE_2D,
172     Texture3D = gl.GL_TEXTURE_3D,
173     Texture1DArray = gl.GL_TEXTURE_1D_ARRAY,
174     Texture2DArray = gl.GL_TEXTURE_2D_ARRAY,
175     TextureRectangle = gl.GL_TEXTURE_RECTANGLE,
176     TextureCubeMap = gl.GL_TEXTURE_CUBE_MAP
177 }
178 
179 enum TextureParameterName {
180     BaseLevel = gl.GL_TEXTURE_BASE_LEVEL,
181     CompareFunc = gl.GL_TEXTURE_COMPARE_FUNC,
182     CompareMode = gl.GL_TEXTURE_COMPARE_MODE,
183     LODBias = gl.GL_TEXTURE_LOD_BIAS,
184     MinFilter = gl.GL_TEXTURE_MIN_FILTER,
185     MagFilter = gl.GL_TEXTURE_MAG_FILTER,
186     MinLOD = gl.GL_TEXTURE_MIN_LOD,
187     MaxLOD = gl.GL_TEXTURE_MAX_LOD,
188     MaxLevel = gl.GL_TEXTURE_MAX_LEVEL,
189     SwizzleR = gl.GL_TEXTURE_SWIZZLE_R,
190     SwizzleG = gl.GL_TEXTURE_SWIZZLE_G,
191     SwizzleB = gl.GL_TEXTURE_SWIZZLE_B,
192     SwizzleA = gl.GL_TEXTURE_SWIZZLE_A,
193     WrapS = gl.GL_TEXTURE_WRAP_S,
194     WrapT = gl.GL_TEXTURE_WRAP_T,
195     WrapR = gl.GL_TEXTURE_WRAP_R,
196 
197     BorderColor = gl.GL_TEXTURE_BORDER_COLOR,
198     SwizzleRGBA = gl.GL_TEXTURE_SWIZZLE_RGBA
199 }
200 
201 enum TextureImage1D {
202     Texture1D = gl.GL_TEXTURE_1D,
203     ProxyTexture1D = gl.GL_PROXY_TEXTURE_1D
204 }
205 
206 enum TextureImage2D {
207     Texture2D = gl.GL_TEXTURE_2D,
208     ProxyTexture2D = gl.GL_PROXY_TEXTURE_2D,
209     Texture1DArray = gl.GL_TEXTURE_1D_ARRAY,
210     ProxyTexture1DArray = gl.GL_PROXY_TEXTURE_1D_ARRAY,
211     TextureRectangle = gl.GL_TEXTURE_RECTANGLE,
212     ProxyTextureRectangle = gl.GL_PROXY_TEXTURE_RECTANGLE,
213     TextureCubeMapPositiveX = gl.GL_TEXTURE_CUBE_MAP_POSITIVE_X,
214     TextureCubeMapNegativeX = gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
215     TextureCubeMapPositiveY = gl.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
216     TextureCubeMapNegativeY = gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
217     TextureCubeMapPositiveZ = gl.GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
218     TextureCubeMapNegativeZ = gl.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
219     ProxyTextureCubeMap = gl.GL_PROXY_TEXTURE_CUBE_MAP
220 }
221 
222 enum DrawBufferType {
223     None = gldepcnst.GL_NONE,
224     FrontLeft = gl.GL_FRONT_LEFT,
225     FrontRight = gl.GL_FRONT_RIGHT,
226     BackLeft = gl.GL_BACK_LEFT,
227     BackRight = gl.GL_BACK_RIGHT,
228     Front = gl.GL_FRONT,
229     Back = gl.GL_BACK,
230     Left = gl.GL_LEFT,
231     Right = gl.GL_RIGHT,
232     FrontAndBack = gl.GL_FRONT_AND_BACK
233 }
234 
235 enum LogicOperators {
236     Clear = gl.GL_CLEAR,
237     Set = gl.GL_SET,
238     Copy = gl.GL_COPY,
239     CopyInverted = gl.GL_COPY_INVERTED,
240     Noop = gl.GL_NOOP,
241     Invert = gl.GL_INVERT,
242     And = gl.GL_AND,
243     Nand = gl.GL_NAND,
244     Or = gl.GL_OR,
245     Nor = gl.GL_NOR,
246     Xor = gl.GL_XOR,
247     Equiv = gl.GL_EQUIV,
248     AndReverse = gl.GL_AND_REVERSE,
249     AndInverted = gl.GL_AND_INVERTED,
250     OrReverse = gl.GL_OR_REVERSE,
251     OrInverted = gl.GL_OR_INVERTED
252 }
253 
254 enum LogicalComparison {
255     Never = gl.GL_NEVER,
256     Less = gl.GL_LESS,
257     LessOrEqual = gl.GL_LEQUAL,
258     Greater = gl.GL_GREATER,
259     Equal = gl.GL_EQUAL,
260     NotEqual = gl.GL_NOTEQUAL,
261     Always = gl.GL_ALWAYS
262 }
263 
264 enum StencilOperators {
265     Keep = gl.GL_KEEP,
266     Zero = gl.GL_ZERO,
267     Replace = gl.GL_REPLACE,
268     Increase = gl.GL_INCR,
269     IncreaseWrap = gl.GL_INCR_WRAP,
270     Decrease = gl.GL_DECR,
271     DecreaseWrap = gl.GL_DECR_WRAP,
272     Invert = gl.GL_INVERT
273 }
274 
275 enum PixelStoreMode {
276     PackingSwapBytes = gl.GL_PACK_SWAP_BYTES,
277     PackingLessSignificantBitFirst = gl.GL_PACK_LSB_FIRST,
278     PackingRowLength = gl.GL_PACK_ROW_LENGTH,
279     PackingImageHeight = gl.GL_PACK_IMAGE_HEIGHT,
280     PackingSkipPixels = gl.GL_PACK_SKIP_PIXELS,
281     PackingSkipRows = gl.GL_PACK_SKIP_ROWS,
282     PackingSkipImages = gl.GL_PACK_SKIP_IMAGES,
283     PackingAlignment = gl.GL_PACK_ALIGNMENT,
284 
285     UnpackingSwapBytes = gl.GL_UNPACK_SWAP_BYTES,
286     UnpackingLessSignificantBitFirst = gl.GL_UNPACK_LSB_FIRST,
287     UnpackingRowLength = gl.GL_UNPACK_ROW_LENGTH,
288     UnpackingImageHeight = gl.GL_UNPACK_IMAGE_HEIGHT,
289     UnpackingSkipPixels = gl.GL_UNPACK_SKIP_PIXELS,
290     UnpackingSkipRows = gl.GL_UNPACK_SKIP_ROWS,
291     UnpackingSkipImages = gl.GL_UNPACK_SKIP_IMAGES,
292     UnpackingAlignment = gl.GL_UNPACK_ALIGNMENT
293 }
294 
295 enum ColorBufferSource {
296     FrontLeft = gl.GL_FRONT_LEFT,
297     FrontRight = gl.GL_FRONT_RIGHT,
298     BackLeft = gl.GL_BACK_LEFT,
299     BackRight = gl.GL_BACK_RIGHT,
300     Front = gl.GL_FRONT,
301     Back = gl.GL_BACK,
302     Left = gl.GL_LEFT,
303     Right = gl.GL_RIGHT,
304     ColorAttachment0 = gl.GL_COLOR_ATTACHMENT0,
305     ColorAttachment1 = gl.GL_COLOR_ATTACHMENT1,
306     ColorAttachment2 = gl.GL_COLOR_ATTACHMENT2,
307     ColorAttachment3 = gl.GL_COLOR_ATTACHMENT3,
308     ColorAttachment4 = gl.GL_COLOR_ATTACHMENT4,
309     ColorAttachment5 = gl.GL_COLOR_ATTACHMENT5,
310     ColorAttachment6 = gl.GL_COLOR_ATTACHMENT6,
311     ColorAttachment7 = gl.GL_COLOR_ATTACHMENT7,
312     ColorAttachment8 = gl.GL_COLOR_ATTACHMENT8,
313     ColorAttachment9 = gl.GL_COLOR_ATTACHMENT9,
314     ColorAttachment10 = gl.GL_COLOR_ATTACHMENT10,
315     ColorAttachment11 = gl.GL_COLOR_ATTACHMENT11,
316     ColorAttachment12 = gl.GL_COLOR_ATTACHMENT12,
317     ColorAttachment13 = gl.GL_COLOR_ATTACHMENT13,
318     ColorAttachment14 = gl.GL_COLOR_ATTACHMENT14,
319     ColorAttachment15 = gl.GL_COLOR_ATTACHMENT15
320 }
321 
322 enum ReadBlockPixelsFormat {
323     StencilIndex = gl.GL_STENCIL_INDEX,
324     DepthComponent = gl.GL_DEPTH_COMPONENT,
325     DepthStencil = gl.GL_DEPTH_STENCIL,
326     Red = gl.GL_RED,
327     Green = gl.GL_GREEN,
328     Blue = gl.GL_BLUE,
329     RGB = gl.GL_RGB,
330     BGR = gl.GL_BGR,
331     RGBA = gl.GL_RGBA,
332     BGRA = gl.GL_BGRA
333 }
334 
335 enum ReadBlockPixelsType {
336     UnsignedByte = gl.GL_UNSIGNED_BYTE,
337     Byte = gl.GL_BYTE,
338     UnsignedShort = gl.GL_UNSIGNED_SHORT,
339     Short = gl.GL_SHORT,
340     UnsignedInt = gl.GL_UNSIGNED_INT,
341     Int = gl.GL_INT,
342     HalfFloat = gl.GL_HALF_FLOAT,
343     Float = gl.GL_FLOAT,
344     UnsignedByte332 = gl.GL_UNSIGNED_BYTE_3_3_2,
345     UnsignedByte233Rev = gl.GL_UNSIGNED_BYTE_2_3_3_REV,
346     UnsignedShort565 = gl.GL_UNSIGNED_SHORT_5_6_5,
347     UnsignedShort565Rev = gl.GL_UNSIGNED_SHORT_5_6_5_REV,
348     UnsignedShort4444 = gl.GL_UNSIGNED_SHORT_4_4_4_4,
349     UnsignedShort4444Rev = gl.GL_UNSIGNED_SHORT_4_4_4_4_REV,
350     UnsignedShort5551 = gl.GL_UNSIGNED_SHORT_5_5_5_1,
351     UnsignedShort1555Rev = gl.GL_UNSIGNED_SHORT_1_5_5_5_REV,
352     UnsignedInt8888 = gl.GL_UNSIGNED_INT_8_8_8_8,
353     UnsignedInt8888Rev = gl.GL_UNSIGNED_INT_8_8_8_8_REV,
354     UnsignedInt1010102 = gl.GL_UNSIGNED_INT_10_10_10_2,
355     UnsignedInt2101010Rev = gl.GL_UNSIGNED_INT_2_10_10_10_REV,
356     UnsignedInt248 = gl.GL_UNSIGNED_INT_24_8,
357     UnsignedInt10f11f11fRev = gl.GL_UNSIGNED_INT_10F_11F_11F_REV,
358     UnsignedInt5999Rev = gl.GL_UNSIGNED_INT_5_9_9_9_REV,
359     Float32UnsignedInt248Rev = gl.GL_FLOAT_32_UNSIGNED_INT_24_8_REV
360 }
361 
362 enum GetValueNames {
363     ColorLogicOp = gl.GL_COLOR_LOGIC_OP,
364     ColorArray = gl.GL_COLOR_ARRAY,
365     ColorArraySize = gl.GL_COLOR_ARRAY_SIZE,
366     ColorArrayStride = gl.GL_COLOR_ARRAY_STRIDE,
367     ColorArrayType = gl.GL_COLOR_ARRAY_TYPE,
368     EdgeFlagArray = gl.GL_EDGE_FLAG_ARRAY,
369     EdgeFlagArrayStride = gl.GL_EDGE_FLAG_ARRAY_STRIDE,
370     IndexArray = gl.GL_INDEX_ARRAY,
371     IndexArrayStride = gl.GL_INDEX_ARRAY_STRIDE,
372     IndexArrayType = gl.GL_INDEX_ARRAY_TYPE,
373     IndexLogicOp = gl.GL_INDEX_LOGIC_OP,
374     NormalArray = gl.GL_NORMAL_ARRAY,
375     NormalArrayStride = gl.GL_NORMAL_ARRAY_STRIDE,
376     NormalArrayType = gl.GL_NORMAL_ARRAY_TYPE,
377     PolygonOffsetUnits = gl.GL_POLYGON_OFFSET_UNITS,
378     PolygonOffsetFactor = gl.GL_POLYGON_OFFSET_FACTOR,
379     PolygonOffsetFill = gl.GL_POLYGON_OFFSET_FILL,
380     PolygonOffsetLine = gl.GL_POLYGON_OFFSET_LINE,
381     PolygonOfffsetPoint = gl.GL_POLYGON_OFFSET_POINT,
382     TextureCoordArray = gl.GL_TEXTURE_COORD_ARRAY,
383     TextureCoordArraySize = gl.GL_TEXTURE_COORD_ARRAY_SIZE,
384     TextureCoordArrayStride = gl.GL_TEXTURE_COORD_ARRAY_STRIDE,
385     TextureCoordArrayType = gl.GL_TEXTURE_COORD_ARRAY_TYPE,
386     VertexArray = gl.GL_VERTEX_ARRAY,
387     VertexArraySize = gl.GL_VERTEX_ARRAY_SIZE,
388     VertexArrayStride = gl.GL_VERTEX_ARRAY_STRIDE,
389     VertexArrayType = gl.GL_VERTEX_ARRAY_TYPE,
390     
391     AliasedPointSizeRange = gl.GL_ALIASED_POINT_SIZE_RANGE,
392     FeedbackBufferSize = gl.GL_FEEDBACK_BUFFER_SIZE,
393     FeedbackBufferType = gl.GL_FEEDBACK_BUFFER_TYPE,
394     LightModelAmbient = gl.GL_LIGHT_MODEL_AMBIENT,
395     LightModelColorControl = gl.GL_LIGHT_MODEL_COLOR_CONTROL,
396     Max3dTextureSize = gl.GL_MAX_3D_TEXTURE_SIZE,
397     MaxElementsIndices = gl.GL_MAX_ELEMENTS_INDICES,
398     MaxElementsVertices = gl.GL_MAX_ELEMENTS_VERTICES,
399     PackImageHeight = gl.GL_PACK_IMAGE_HEIGHT,
400     PackSkipImages = gl.GL_PACK_SKIP_IMAGES,
401     RescaleNormal = gl.GL_RESCALE_NORMAL,
402     SelectionBufferSize = gl.GL_SELECTION_BUFFER_SIZE,
403     SmoothLineWidthGranularity = gl.GL_SMOOTH_LINE_WIDTH_GRANULARITY,
404     SmoothLineWidthRange = gl.GL_SMOOTH_LINE_WIDTH_RANGE,
405     SmoothPointSizeGranularity = gl.GL_SMOOTH_POINT_SIZE_GRANULARITY,
406     SmoothPointSizeRange = gl.GL_SMOOTH_POINT_SIZE_RANGE,
407     //Texture3D = gl.GL_TEXTURE_3D,
408     TextureBinding3D = gl.GL_TEXTURE_BINDING_3D,
409     UnpackImageHeight = gl.GL_UNPACK_IMAGE_HEIGHT,
410     UnpackSkipImages = gl.GL_UNPACK_SKIP_IMAGES,
411     
412     CompressedTextureFormats = gl.GL_COMPRESSED_TEXTURE_FORMATS,
413     NumCompressedTextureFormats = gl.GL_NUM_COMPRESSED_TEXTURE_FORMATS,
414     TextureBindingCubeMap = gl.GL_TEXTURE_BINDING_CUBE_MAP,
415     TextureCompresssionHint = gl.GL_TEXTURE_COMPRESSION_HINT,
416     
417     BlendDestinationAlpha = gl.GL_BLEND_DST_ALPHA,
418     BlendDestinationRGB = gl.GL_BLEND_DST_RGB,
419     BlendSourceAlpha = gl.GL_BLEND_SRC_ALPHA,
420     BlendSourceRGB = gl.GL_BLEND_SRC_RGB,
421     CurrentFogCoord = gl.GL_CURRENT_FOG_COORD,
422     CurrentSecondaryColor = gl.GL_CURRENT_SECONDARY_COLOR,
423     FogCoordArrayStride = gl.GL_FOG_COORD_ARRAY_STRIDE,
424     FogCoordArrayType = gl.GL_FOG_COORD_ARRAY_TYPE,
425     FogCoordSource = gl.GL_FOG_COORD_SRC,
426     MaxTextureLodBias = gl.GL_MAX_TEXTURE_LOD_BIAS,
427     PointSizeMin = gl.GL_POINT_SIZE_MIN,
428     PointSizeMax = gl.GL_POINT_SIZE_MAX,
429     PointFadeThresholdSize = gl.GL_POINT_FADE_THRESHOLD_SIZE,
430     PointDistanceAttenuation = gl.GL_POINT_DISTANCE_ATTENUATION,
431     SecondaryColorArraySize = gl.GL_SECONDARY_COLOR_ARRAY_SIZE,
432     SecondaryColorArrayStride = gl.GL_SECONDARY_COLOR_ARRAY_STRIDE,
433     SecondaryColorArrayType = gl.GL_SECONDARY_COLOR_ARRAY_TYPE,
434     
435     ArrayBufferBinding = gl.GL_ARRAY_BUFFER_BINDING,
436     ColorArrayBufferBinding = gl.GL_COLOR_ARRAY_BUFFER_BINDING,
437     EdgeFlagArrayBufferBinding = gl.GL_EDGE_FLAG_ARRAY_BUFFER_BINDING,
438     ElementArrayBufferBinding = gl.GL_ELEMENT_ARRAY_BUFFER_BINDING,
439     FogCoordArrayBufferBinding = gl.GL_FOG_COORD_ARRAY_BUFFER_BINDING,
440     IndexArrayBufferBinding = gl.GL_INDEX_ARRAY_BUFFER_BINDING,
441     NormalArrayBufferBinding = gl.GL_NORMAL_ARRAY_BUFFER_BINDING,
442     SecondaryColorArrayBufferBinding = gl.GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING,
443     TextureCoordArrayBufferBinding = gl.GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING,
444     VertexArrayBufferBinding = gl.GL_VERTEX_ARRAY_BUFFER_BINDING,
445     
446     BlendEquationAlpha = gl.GL_BLEND_EQUATION_ALPHA,
447     BlendEquationRGB = gl.GL_BLEND_EQUATION_RGB,
448     DrawBuffer0 = gl.GL_DRAW_BUFFER0,
449     DrawBuffer1 = gl.GL_DRAW_BUFFER1,
450     DrawBuffer2 = gl.GL_DRAW_BUFFER2,
451     DrawBuffer3 = gl.GL_DRAW_BUFFER3,
452     DrawBuffer4 = gl.GL_DRAW_BUFFER4,
453     DrawBuffer5 = gl.GL_DRAW_BUFFER5,
454     DrawBuffer6 = gl.GL_DRAW_BUFFER6,
455     DrawBuffer7 = gl.GL_DRAW_BUFFER7,
456     DrawBuffer8 = gl.GL_DRAW_BUFFER8,
457     DrawBuffer9 = gl.GL_DRAW_BUFFER9,
458     DrawBuffer10 = gl.GL_DRAW_BUFFER10,
459     DrawBuffer11 = gl.GL_DRAW_BUFFER11,
460     DrawBuffer12 = gl.GL_DRAW_BUFFER12,
461     DrawBuffer13 = gl.GL_DRAW_BUFFER13,
462     DrawBuffer14 = gl.GL_DRAW_BUFFER14,
463     DrawBuffer15 = gl.GL_DRAW_BUFFER15,
464     FragmentShaderDerivativeHint = gl.GL_FRAGMENT_SHADER_DERIVATIVE_HINT,
465     CombinedTextureImageUnits = gl.GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
466     MaxDrawBuffers = gl.GL_MAX_DRAW_BUFFERS,
467     MaxFragmentUniformComponents = gl.GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
468     MaxTextureCoords = gl.GL_MAX_TEXTURE_COORDS,
469     MaxTextureImageUnits = gl.GL_MAX_TEXTURE_IMAGE_UNITS,
470     MaxVaryingFloats = gl.GL_MAX_VARYING_FLOATS,
471     MaxVertexAttribs = gl.GL_MAX_VERTEX_ATTRIBS,
472     maxVertexTextureImageUnits = gl.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
473     MaxVertexUniformComponents = gl.GL_MAX_VERTEX_UNIFORM_COMPONENTS,
474     PointSprite = gl.GL_POINT_SPRITE,
475     StencilBackFail = gl.GL_STENCIL_BACK_FAIL,
476     StencilBackFunc = gl.GL_STENCIL_BACK_FUNC,
477     StencilBackPassDepthFail = gl.GL_STENCIL_BACK_PASS_DEPTH_FAIL,
478     StencilBackPassDepthPass = gl.GL_STENCIL_BACK_PASS_DEPTH_PASS,
479     StencilBackRef = gl.GL_STENCIL_BACK_REF,
480     StencilBackValueMask = gl.GL_STENCIL_BACK_VALUE_MASK,
481     StencilBackWriteMask = gl.GL_STENCIL_BACK_WRITEMASK,
482     VertexProgramPointSize = gl.GL_VERTEX_PROGRAM_POINT_SIZE,
483     VertexProgramTwoSide = gl.GL_VERTEX_PROGRAM_TWO_SIDE,
484     
485     CurrentRasterSecondaryColor = gl.GL_CURRENT_RASTER_SECONDARY_COLOR,
486     PixelPackBufferBinding = gl.GL_PIXEL_PACK_BUFFER_BINDING,
487     PixelUnpackBufferBinding = gl.GL_PIXEL_UNPACK_BUFFER_BINDING,
488     
489     LineWidthGranularity = gl.GL_LINE_WIDTH_GRANULARITY,
490     LineWidthRange = gl.GL_LINE_WIDTH_RANGE,
491     PointSizeGranularity = gl.GL_POINT_SIZE_GRANULARITY,
492     PointSizeRange = gl.GL_POINT_SIZE_RANGE,
493     BlendEquation = gldepcnst.GL_BLEND_EQUATION,
494     
495     ColorMatrix = gl.GL_COLOR_MATRIX,
496     ColorMatrixStackDepth = gl.GL_COLOR_MATRIX_STACK_DEPTH,
497     ColorTable = gl.GL_COLOR_TABLE,
498     Convolution1D = gl.GL_CONVOLUTION_1D,
499     Convolution2D = gl.GL_CONVOLUTION_2D,
500     Histogram = gl.GL_HISTOGRAM,
501     MaxColorMatrixStackDepth = gl.GL_MAX_COLOR_MATRIX_STACK_DEPTH,
502     MinMax = gl.GL_MINMAX,
503     PostColorMatrixColorTable = gl.GL_POST_COLOR_MATRIX_COLOR_TABLE,
504     PostColorMatrixRedBias = gl.GL_POST_COLOR_MATRIX_RED_BIAS,
505     PostColorMatrixGreenBias = gl.GL_POST_COLOR_MATRIX_GREEN_BIAS,
506     PostColorMatrixBlueBias = gl.GL_POST_COLOR_MATRIX_BLUE_BIAS,
507     PostColorMatrixAlphaBias = gl.GL_POST_COLOR_MATRIX_ALPHA_BIAS,
508     PostColorMatrixRedScale = gl.GL_POST_COLOR_MATRIX_RED_SCALE,
509     PostColorMatrixGreenScale = gl.GL_POST_COLOR_MATRIX_GREEN_SCALE,
510     PostColorMatrixBlueScale = gl.GL_POST_COLOR_MATRIX_BLUE_SCALE,
511     PostColorMatrixAlphaScale = gl.GL_POST_COLOR_MATRIX_ALPHA_SCALE,
512     PostConvolutionColorTable = gl.GL_POST_CONVOLUTION_COLOR_TABLE,
513     PostConvolutionRedBias = gl.GL_POST_CONVOLUTION_RED_BIAS,
514     PostConvolutionGreenBias = gl.GL_POST_CONVOLUTION_GREEN_BIAS,
515     PostConvolutionBlueBias = gl.GL_POST_CONVOLUTION_BLUE_BIAS,
516     PostConvolutionAlphaBias = gl.GL_POST_CONVOLUTION_ALPHA_BIAS,
517     PostConvolutionRedScale = gl.GL_POST_CONVOLUTION_RED_SCALE,
518     PostConvolutionGreenScale = gl.GL_POST_CONVOLUTION_GREEN_SCALE,
519     PostConvolutionBlueScale = gl.GL_POST_CONVOLUTION_BLUE_SCALE,
520     PostConvolutionALphaScale = gl.GL_POST_CONVOLUTION_ALPHA_SCALE,
521     Seperable2D = gl.GL_SEPARABLE_2D,
522     
523     CurrentRasterTextureCoords = gl.GL_CURRENT_RASTER_TEXTURE_COORDS,
524     Texture1D = gl.GL_TEXTURE_1D,
525     TextureBinding1D = gl.GL_TEXTURE_BINDING_1D,
526     Texture2D = gl.GL_TEXTURE_2D,
527     TextureBinding2D = gl.GL_TEXTURE_BINDING_2D,
528     Texture3D = gl.GL_TEXTURE_3D,
529     TexutreBinding3D = gl.GL_TEXTURE_BINDING_3D,
530     TextureGenS = gl.GL_TEXTURE_GEN_S,
531     TextureGenT = gl.GL_TEXTURE_GEN_T,
532     TextureGenR = gl.GL_TEXTURE_GEN_R,
533     TextureGenQ = gl.GL_TEXTURE_GEN_Q,
534     TextureMatrix = gl.GL_TEXTURE_MATRIX,
535     TextureStackDepth = gl.GL_TEXTURE_STACK_DEPTH
536 }
537 
538 enum ErrorTypes {
539     NoError = gl.GL_NO_ERROR,
540     InvalidEnum = gl.GL_INVALID_ENUM,
541     InvalidValue = gl.GL_INVALID_VALUE,
542     InvalidOperation = gl.GL_INVALID_OPERATION,
543     StackOverflow = gl.GL_STACK_OVERFLOW,
544     StackUnderflow = gl.GL_STACK_UNDERFLOW,
545     OutOfMemory = gl.GL_OUT_OF_MEMORY,
546     TableTooLarge = gl.GL_TABLE_TOO_LARGE
547 }
548 
549 enum GetStringNames {
550     Vendor = gl.GL_VENDOR,
551     Renderer = gl.GL_RENDERER,
552     Version = gl.GL_VERSION,
553     ShadingLanguageVersion = gl.GL_SHADING_LANGUAGE_VERSION,
554     Extension = gl.GL_EXTENSIONS
555 }
556 
557 enum GetTargetTexture {
558     Texture1D = gl.GL_TEXTURE_1D,
559     Texture2D = gl.GL_TEXTURE_2D,
560     Texture3D = gl.GL_TEXTURE_3D,
561     TextureCubeMap = gl.GL_TEXTURE_CUBE_MAP
562 }
563 
564 enum GetTargetTextureParameter {
565     TextureMagFilter = gl.GL_TEXTURE_MAG_FILTER,
566     TextureMinFilter = gl.GL_TEXTURE_MIN_FILTER,
567     TextureMinLod = gl.GL_TEXTURE_MIN_LOD,
568     TextureMaxLod = gl.GL_TEXTURE_MAX_LOD,
569     TextureBaseLevel = gl.GL_TEXTURE_BASE_LEVEL,
570     TextureMaxLevel = gl.GL_TEXTURE_MAX_LEVEL,
571     TextureWrapS = gl.GL_TEXTURE_WRAP_S,
572     TextureWrapT = gl.GL_TEXTURE_WRAP_T,
573     TextureWrapR = gl.GL_TEXTURE_WRAP_R,
574     TextureBorderColor = gl.GL_TEXTURE_BORDER_COLOR,
575     TexturePriority = gl.GL_TEXTURE_PRIORITY,
576     TextureResident = gl.GL_TEXTURE_RESIDENT,
577     TextureCompareMode = gl.GL_TEXTURE_COMPARE_MODE,
578     TextureCompareFunc = gl.GL_TEXTURE_COMPARE_FUNC,
579     DepthTextureMode = gl.GL_DEPTH_TEXTURE_MODE,
580     GenerateMipMap = gl.GL_GENERATE_MIPMAP
581 }
582 
583 enum GetTextureParameter {
584     Width = gl.GL_TEXTURE_WIDTH,
585     Height = gl.GL_TEXTURE_HEIGHT,
586     Depth = gl.GL_TEXTURE_DEPTH,
587     InternalFormat = gl.GL_TEXTURE_INTERNAL_FORMAT,
588     Border = gl.GL_TEXTURE_BORDER,
589     RedSize = gl.GL_TEXTURE_RED_SIZE,
590     GreenSize = gl.GL_TEXTURE_GREEN_SIZE,
591     BlueSize = gl.GL_TEXTURE_BLUE_SIZE,
592     AlphaSize = gl.GL_TEXTURE_ALPHA_SIZE,
593     LuminanceSize = gl.GL_TEXTURE_LUMINANCE_SIZE,
594     IntensitySize = gl.GL_TEXTURE_INTENSITY_SIZE,
595     DepthSize = gl.GL_TEXTURE_DEPTH_SIZE,
596     Compressed = gl.GL_TEXTURE_COMPRESSED,
597     CompressedImageSize = gl.GL_TEXTURE_COMPRESSED_IMAGE_SIZE
598 }
599 
600 enum Capabilities {
601     AlphaTest = gl.GL_ALPHA_TEST,
602     AutoNormal = gl.GL_AUTO_NORMAL,
603     Blend = gl.GL_BLEND,
604     /*ClipPlane0 = gl.GL_CLIP_PLANE0,
605     ClipPlane1 = gl.GL_CLIP_PLANE1,
606     ClipPlane2 = gl.GL_CLIP_PLANE2,
607     ClipPlane3 = gl.GL_CLIP_PLANE3,
608     ClipPlane4 = gl.GL_CLIP_PLANE4,
609     ClipPlane5 = gl.GL_CLIP_PLANE5,
610     ClipPlane6 = gl.GL_CLIP_PLANE6,
611     ClipPlane7 = gl.GL_CLIP_PLANE7,
612     ClipPlane8 = gl.GL_CLIP_PLANE8,
613     ClipPlane9 = gl.GL_CLIP_PLANE9,
614     ClipPlane10 = gl.GL_CLIP_PLANE10,
615     ClipPlane11 = gl.GL_CLIP_PLANE11,
616     ClipPlane12 = gl.GL_CLIP_PLANE12,
617     ClipPlane13 = gl.GL_CLIP_PLANE13,
618     ClipPlane14 = gl.GL_CLIP_PLANE14,
619     ClipPlane15 = gl.GL_CLIP_PLANE15,*/
620     ColorArray = gl.GL_COLOR_ARRAY,
621     ColorLogicOp = gl.GL_COLOR_LOGIC_OP,
622     ColorMaterial = gl.GL_COLOR_MATERIAL,
623     ColorSum = gl.GL_COLOR_SUM,
624     ColorTable = gl.GL_COLOR_TABLE,
625     Convolution1D = gl.GL_CONVOLUTION_1D,
626     Convolution2D = gl.GL_CONVOLUTION_2D,
627     CullFace = gl.GL_CULL_FACE,
628     DepthTest = gl.GL_DEPTH_TEST,
629     Dither = gl.GL_DITHER,
630     EdgeFlagArray = gl.GL_EDGE_FLAG_ARRAY,
631     Fog = gl.GL_FOG,
632     FogCoordArray = gl.GL_FOG_COORD_ARRAY,
633     Histogram = gl.GL_HISTOGRAM,
634     IdnexArray = gl.GL_INDEX_ARRAY,
635     IndexLogicOp = gl.GL_INDEX_LOGIC_OP,
636     Light0 = gl.GL_LIGHT0,
637     Light1 = gl.GL_LIGHT1,
638     Light2 = gl.GL_LIGHT2,
639     Light3 = gl.GL_LIGHT3,
640     Light4 = gl.GL_LIGHT4,
641     Light5 = gl.GL_LIGHT5,
642     Light6 = gl.GL_LIGHT6,
643     Light7 = gl.GL_LIGHT7,
644     Lighting = gl.GL_LIGHTING,
645     LineSmooth = gl.GL_LINE_SMOOTH,
646     LineStipple = gl.GL_LINE_STIPPLE,
647     Map1Color4 = gl.GL_MAP1_COLOR_4,
648     Map1Index = gl.GL_MAP1_INDEX,
649     Map1Normal = gl.GL_MAP1_NORMAL,
650     Map1TextureCoord1 = gl.GL_MAP1_TEXTURE_COORD_1,
651     Map1TextureCoord2 = gl.GL_MAP1_TEXTURE_COORD_2,
652     Map1TextureCoord3 = gl.GL_MAP1_TEXTURE_COORD_3,
653     Map1TextureCoord4 = gl.GL_MAP1_TEXTURE_COORD_4,
654     Map2Color4 = gl.GL_MAP2_COLOR_4,
655     Map2Index = gl.GL_MAP2_INDEX,
656     Map2Normal = gl.GL_MAP2_NORMAL,
657     Map2TextureCoord1 = gl.GL_MAP2_TEXTURE_COORD_1,
658     Map2TextureCoord2 = gl.GL_MAP2_TEXTURE_COORD_2,
659     Map2TextureCoord3 = gl.GL_MAP2_TEXTURE_COORD_3,
660     Map2TextureCoord4 = gl.GL_MAP2_TEXTURE_COORD_4,
661     Map2Vertex3 = gl.GL_MAP2_VERTEX_3,
662     Map2Vertex4 = gl.GL_MAP2_VERTEX_4,
663     MinMax = gl.GL_MINMAX,
664     MultiSample = gl.GL_MULTISAMPLE,
665     NormalArray = gl.GL_NORMAL_ARRAY,
666     Normalize = gl.GL_NORMALIZE,
667     PointSmooth = gl.GL_POINT_SMOOTH,
668     PointSprite = gl.GL_POINT_SPRITE,
669     PolygonSmooth = gl.GL_POLYGON_SMOOTH,
670     PolygonOffsetFill = gl.GL_POLYGON_OFFSET_FILL,
671     PolygonOffsetLine = gl.GL_POLYGON_OFFSET_LINE,
672     PolygonOffsetPoint = gl.GL_POLYGON_OFFSET_POINT,
673     PolygonStipple = gl.GL_POLYGON_STIPPLE,
674     PostColorMatrixColorTable = gl.GL_POST_COLOR_MATRIX_COLOR_TABLE,
675     PostConvolutionColorTable = gl.GL_POST_CONVOLUTION_COLOR_TABLE,
676     RescaleNormal = gl.GL_RESCALE_NORMAL,
677     SampleAlphaToCoverage = gl.GL_SAMPLE_ALPHA_TO_COVERAGE,
678     SampleCoverage = gl.GL_SAMPLE_COVERAGE,
679     ScissorTest = gl.GL_SCISSOR_TEST,
680     SecondaryColorArray = gl.GL_SECONDARY_COLOR_ARRAY,
681     Seperable2D = gl.GL_SEPARABLE_2D,
682     StencilTest = gl.GL_STENCIL_TEST,
683     Texture1D = gl.GL_TEXTURE_1D,
684     Texture2D = gl.GL_TEXTURE_2D,
685     Texture3D = gl.GL_TEXTURE_3D,
686     TextureCoordArray = gl.GL_TEXTURE_COORD_ARRAY,
687     TextureCubeMap = gl.GL_TEXTURE_CUBE_MAP,
688     TextureGenQ = gl.GL_TEXTURE_GEN_Q,
689     TextureGenR = gl.GL_TEXTURE_GEN_R,
690     TextureGenS = gl.GL_TEXTURE_GEN_S,
691     TextureGenT = gl.GL_TEXTURE_GEN_T,
692     VertexArray = gl.GL_VERTEX_ARRAY,
693     VertexProgramPointSize = gl.GL_VERTEX_PROGRAM_POINT_SIZE,
694     VertexProgramTwoSide = gl.GL_VERTEX_PROGRAM_TWO_SIDE,
695     Error = 0
696 }
697 
698 enum TextureWrapping {
699     ClampEdge = gl.GL_CLAMP_TO_EDGE,
700     ClampBorder = gl.GL_CLAMP_TO_BORDER,
701     Repeat = gl.GL_REPEAT,
702     MirroredRepeat = gl.GL_MIRRORED_REPEAT
703 }
704 
705 enum TextureFilter {
706     Nearest = gl.GL_NEAREST,
707     Linear = gl.GL_LINEAR,
708     NearestMipmapNearest = gl.GL_NEAREST_MIPMAP_NEAREST,
709     LinearMipmapNearest = gl.GL_LINEAR_MIPMAP_NEAREST,
710     NearestMipmapLinear = gl.GL_NEAREST_MIPMAP_LINEAR,
711     LinearMipmapLinear = gl.GL_LINEAR_MIPMAP_LINEAR
712 }
713 
714 void glClear(bool buffer = false, bool depth = false, bool stencil = false) {
715     gl.glClear((buffer ? gl.GL_COLOR_BUFFER_BIT : 0) | (depth ? gl.GL_DEPTH_BUFFER_BIT : 0) | (stencil ? gl.GL_STENCIL_BUFFER_BIT : 0));
716 }
717 
718 void glTexImage2D(BindTextureTarget target, int level, InternalFormat internalFormat, int width, int height, PixelFormat format, PixelDataType type, void[] data) {
719     gl.glTexImage2D(cast(gl.GLenum)target, level, cast(gl.GLenum)internalFormat, width, height, 0, cast(gl.GLenum)format, cast(gl.GLenum)type, data.ptr);
720 }
721 
722 void glCullFace(Face face = Face.Back) {
723     gl.glCullFace(cast(gl.GLenum)face);
724 }
725 
726 void glFrontFace(ClockOrientation orientation = ClockOrientation.CounterClockWise) {
727     gl.glFrontFace(cast(gl.GLenum)orientation);
728 }
729 
730 void glHint(HintMode mode) {
731     gl.glHint(gl.GL_GENERATE_MIPMAP_HINT, cast(gl.GLenum)mode);
732 }
733 
734 void glPolygonMode(Face face, PolygonMode mode) {
735     gl.glPolygonMode(cast(gl.GLenum)face, cast(gl.GLenum)mode);
736 }
737 
738 void glTexParameter(TextureParameterTarget target,
739                      TextureParameterName pname,
740                      float param) {
741     gl.glTexParameterf(target, pname, param);
742 }
743 
744 void glTexParameter(TextureParameterTarget target,
745                     TextureParameterName pname,
746                     int param) {
747     gl.glTexParameteri(target, pname, param);
748 }
749 
750 void glTexParameter(TextureParameterTarget target,
751                     TextureParameterName pname,
752                     float[] param) {
753     gl.glTexParameterfv(target, pname, param.ptr);
754 }
755 
756 void glTexParameter(TextureParameterTarget target,
757                     TextureParameterName pname,
758                     int[] param) {
759     gl.glTexParameteriv(target, pname, param.ptr);
760 }
761 
762 void glTexParameterI(TextureParameterTarget target,
763                     TextureParameterName pname,
764                     int[] param) {
765     gl.glTexParameterIiv(target, pname, param.ptr);
766 }
767 
768 void glTexParameterI(TextureParameterTarget target,
769                     TextureParameterName pname,
770                     uint[] param) {
771     gl.glTexParameterIuiv(target, pname, param.ptr);
772 }
773 
774 void glTexImage(TextureImage1D target, int level, InternalFormat internalFormat, int width, int border, PixelFormat format, PixelDataType type, void[] data) {
775     gl.glTexImage1D(target, level, internalFormat, width, border, format, type, data.ptr);
776 }
777 
778 void glTexImage(TextureImage2D target, int level, InternalFormat internalFormat, int width, int height, int border, PixelFormat format, PixelDataType type, void[] data) {
779     gl.glTexImage2D(target, level, internalFormat, width, height, border, format, type, data.ptr);
780 }
781 
782 void glDrawBuffer(DrawBufferType type) {
783     gl.glDrawBuffer(type);
784 }
785 
786 void glClearDepth(int value) {
787     gl.glClearDepth(value);
788 }
789 
790 void glClearDepth(float value) {
791     gl.glClearDepthf(value);
792 }
793 
794 void glColorMask(bool red, bool green, bool blue, bool alpha) {
795     gl.glColorMask(red, green, blue, alpha);
796 }
797 
798 void glColorMask(uint buf, bool red, bool green, bool blue, bool alpha) {
799     gl.glColorMaski(buf, red, green, blue, alpha);
800 }
801 
802 void glEnable(EnableFunc func) {
803     gl.glEnable(cast(gl.GLenum)func);
804 }
805 
806 void glDisable(EnableFunc func) {
807     gl.glDisable(cast(gl.GLenum)func);
808 }
809 
810 void glBlendFunc(BlendFactors sfactor, BlendFactors dfactor) {
811     gl.glBlendFunc(cast(gl.GLenum)sfactor, cast(gl.GLenum)dfactor);
812 }
813 
814 void glBlendFunci(uint buf, BlendFactors sfactor, BlendFactors dfactor) {
815     gl.glBlendFunci(buf, cast(gl.GLenum)sfactor, cast(gl.GLenum)dfactor);
816 }
817 
818 void glLogicOp(LogicOperators op = LogicOperators.Copy) {
819     gl.glLogicOp(op);
820 }
821 
822 void glStencilFunc(LogicalComparison func, int ref_, uint mask) {
823     gl.glStencilFunc(func, ref_, mask);
824 }
825 
826 void glStencilOp(StencilOperators sfail = StencilOperators.Keep, StencilOperators dpfail = StencilOperators.Keep, StencilOperators dppass = StencilOperators.Keep) {
827     gl.glStencilOp(sfail, dpfail, dppass);
828 }
829 
830 void glDepthFunc(LogicalComparison func) {
831     gl.glDepthFunc(func);
832 }
833 
834 void glPixelStore(PixelStoreMode pname, float param) {
835     gl.glPixelStoref(pname, param);
836 }
837 
838 void glPixelStore(PixelStoreMode pname, int param) {
839     gl.glPixelStorei(pname, param);
840 }
841 
842 void glReadBuffer(ColorBufferSource mode) {
843     gl.glReadBuffer(mode);
844 }
845 
846 void[] glReadPixels(int x, int y, int width, int height, ReadBlockPixelsFormat format, ReadBlockPixelsType type) {
847     void[] ret;
848     gl.glReadPixels(x, y, width, height, format, type, ret.ptr);
849     return ret;
850 }
851 
852 bool glGetBoolean(GetValueNames pname) {
853     bool ret;
854     gl.glGetBooleanv(pname, cast(ubyte*)&ret);
855     return ret;
856 }
857 
858 double glGetDouble(GetValueNames pname) {
859     double ret;
860     gl.glGetDoublev(pname, &ret);
861     return ret;
862 }
863 
864 float glGetBoolean(GetValueNames pname) {
865     float ret;
866     gl.glGetFloatv(pname, &ret);
867     return ret;
868 }
869 
870 int glGetInteger(GetValueNames pname) {
871     int ret;
872     gl.glGetIntegerv(pname, &ret);
873     return ret;
874 }
875 
876 ErrorTypes glGetError() {
877     return cast(ErrorTypes)gl.glGetError();
878 }
879 
880 string glGetString(GetStringNames name) {
881     import core.stdc..string : strlen;
882     char* cstr;
883     cstr = cast(char*)gl.glGetString(name);
884     return cast(string)(cstr ? cstr[0 .. strlen(cstr)] : cstr[0 .. 0]);
885 }
886 
887 /*TODO: requires to allocate for return variable (img)
888 bindFunc(cast(void**)&glGetTexImage, "glGetTexImage");*/
889 
890 float[] glGetTexParameterFloat(GetTargetTexture target, GetTargetTextureParameter pname) {
891     float[] ret;
892     gl.glGetTexParameterfv(target, pname, ret.ptr);
893     return ret;
894 }
895 
896 int[] glGetTexParameterInteger(GetTargetTexture target, GetTargetTextureParameter pname) {
897     int[] ret;
898     gl.glGetTexParameteriv(target, pname, ret.ptr);
899     return ret;
900 }
901 
902 float[] glGetTexLevelParameterFloat(GetTargetTexture target, int level, GetTextureParameter pname) {
903     float[] ret;
904     gl.glGetTexLevelParameterfv(target, level, pname, ret.ptr);
905     return ret;
906 }
907 
908 int[] glGetTexLevelParameterInteger(GetTargetTexture target, int level, GetTextureParameter pname) {
909     int[] ret;
910     gl.glGetTexLevelParameteriv(target, level, pname, ret.ptr);
911     return ret;
912 }
913 
914 bool glIsEnabled(Capabilities cap) {
915     return cast(bool)gl.glIsEnabled(cap);
916 }
917 
918 void glDepthRange(float nearVal = 0, float farVal = 1)
919 in {
920     assert(nearVal >= -1 && nearVal <= 1);
921     assert(farVal >= -1 && farVal <= 1);
922 } body {
923     gl.glDepthRange(nearVal, farVal);
924 }